﻿Imports System.Text
Imports System.Math

Public Class frmConstatacaoPreliminar
    Inherits formPadrao

    Dim Sep As Char = ","
    Dim Nombre As Double
    Private nomeDiretorio As String = Nothing
    Public WithEvents btnLimpar As System.Windows.Forms.Button
    Private mensagem As String
    Private erroNivel As Integer = 0
    Private _ehPreliminar As Boolean = Nothing
    Private fracionar As Boolean = False
    Private n As Integer
    Private tevePeso As Boolean = False
    Public CARREGADADOS As Boolean = Nothing
    Public NUM_REGISTRO As Integer
    Public ANO As Integer
    Public ID_TIPO_PERICIA As Integer = 16
    Public ID_NATUREZA As Integer = 68
    Public EHNOVO As Boolean = True
    Public WithEvents _ucDrogas As New ucDrogas
    Public Property EHPRELIMINAR() As Boolean
        Get
            Return _ehPreliminar
        End Get
        Set(value As Boolean)
            _ehPreliminar = value
        End Set
    End Property
    Public Sub New()
        InitializeComponent()
        If Not DesignMode Then
            Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
        End If
    End Sub


    Private Sub frmAvaliacao_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try
            Me.WindowState = FormWindowState.Maximized
            generica.redimensionaControle(pnlItens)
            Me.ControlBox = False
            Me.pnlResultado.Controls.Add(_ucDrogas)
            pnlResultado.Focus()
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Public Sub mudouIndiceComboDrogas(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ucDrogas.onSelectedIndexChanged
        Try
            If _ucDrogas.getDrogas.Equals("ECSTASY") Or _ucDrogas.getDrogas.Equals("LOLÓ") Or _ucDrogas.getDrogas.Equals("LANÇAPERFUME") Or _ucDrogas.getDrogas.Equals("LSD") Then
                pnlPeso.Enabled = False
            Else
                pnlPeso.Enabled = True
            End If


            If _ucDrogas.getDrogas.Equals("LOLÓ") Or _ucDrogas.getDrogas.Equals("LANÇAPERFUME") Then
                grpAmostragem.Enabled = False
            Else
                grpAmostragem.Enabled = True
            End If

            If _ucDrogas.getIndiceDroga > 0 Then
                txtQtdeUnidades.Focus()
                Select Case _ucDrogas.getDrogas.ToString
                    Case "MACONHA"
                        preencheDrogas(4, 4)
                    Case "COCAÍNA"
                        preencheDrogas(1, 1)
                    Case "LOLÓ"
                        preencheDrogas(10, 3)
                    Case "LANÇAPERFUME"
                        preencheDrogas(10, 3)
                    Case "CRACK"
                        preencheDrogas(0, 0)
                    Case "HAXIXE"
                        preencheDrogas(5, 4)
                    Case "FRUTOS DE MACONHA"
                        preencheDrogas(6, 4)
                    Case "ECSTASY"
                        preencheDrogas(7, -1)
                    Case "LSD"
                        preencheDrogas(9, -1)
                    Case Else
                        cmbDescricao.SelectedIndex = -1
                        cmbCor.SelectedIndex = -1
                        cmbDescricao.Focus()
                End Select
            End If

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    '--------------------------------------------------------------------------------------------------------------------------------
    ' FUNÇÃO QUE IRÁ GERAR O LAUDO
    '--------------------------------------------------------------------------------------------------------------------------------
    Private Sub geraLaudo()



        Dim texto As New StringBuilder
        Dim textoInvolucroIC, textoInvolucroIC01 As New StringBuilder
        Dim textoInvolucroAut, textoInvolucroAut01 As New StringBuilder
        Dim textoPluralSingular As String = Nothing
        texto.Append("HISTÓRICO")
        texto.Append(Environment.NewLine)
        texto.Append(Environment.NewLine)
        texto.Append("Em atendimento à requisição da autoridade responsável, ao disposto na Lei 11.343 de 23/08/2006 e Portaria Federal 344/98 do Ministério da Saúde, bem como por determinação da chefia do Instituto de Criminalística, o Perito Criminal Oficial, signatário do presente laudo, realizou os exames na(s) substância(s) encaminhada(s) passando a relatar o que foi constatado.")
        texto.Append(Environment.NewLine)
        texto.Append(Environment.NewLine)
        texto.Append("DO MATERIAL")
        texto.Append(Environment.NewLine)
        texto.Append(Environment.NewLine)

        For Each objrow As DataGridViewRow In gridDrogas.Rows
            Try
                texto.Append(objrow.Cells(0).Value)
                texto.Append(Environment.NewLine)
            Catch ex As Exception
                generica.gravaErro(ex)
            End Try
        Next
        texto.Append(Environment.NewLine)
        If tevePeso Then
            texto.Append("Observação: Entenda-se por " & Chr(34) & "in totum" & Chr(34) & "a massa total do material apreendido, ou seja, a massa da substância acrescida da massa da embalagem, visando manter a característica e forma em que a substância foi apreendida na origem.")
            texto.Append(Environment.NewLine)
        End If

        texto.Append(Environment.NewLine)
        texto.Append("DOS EXAMES")
        texto.Append(Environment.NewLine)
        texto.Append(Environment.NewLine)

        For Each objrow As DataGridViewRow In gridDrogas.Rows
            Try
                texto.Append(objrow.Cells(1).Value)
                texto.Append(Environment.NewLine)
            Catch ex As Exception
                generica.gravaErro(ex)
            End Try
        Next

        texto.Append(Environment.NewLine)
        texto.Append("DO ACONDICIONAMENTO")
        texto.Append(Environment.NewLine)
        texto.Append(Environment.NewLine)

        For Each objrow As DataGridViewRow In gridDrogas.Rows
            Try
                texto.Append(objrow.Cells(2).Value)
                texto.Append(Environment.NewLine)
            Catch ex As Exception
                generica.gravaErro(ex)
            End Try
        Next

        texto.Append(Environment.NewLine)
        texto.Append("DOS ESCLARECIMENTOS FINAIS")
        texto.Append(Environment.NewLine)
        texto.Append(Environment.NewLine)

                If gridDrogas.Rows.Count = 1 Then
                    textoInvolucroIC.Append("O material acima discriminado, destinado à realização dos competentes exames toxicológicos definitivos, em laboratório especializado, encontra-se devidamente acondicionado em ")
                    textoInvolucroAut.Append("O restante do material, anexado a este laudo, ficará sob guarda da Autoridade Requisitante, acondicionado em ")
                Else
                    textoInvolucroIC.Append("Os materiais acima discriminados, destinados à realização dos competentes exames toxicológicos definitivos, em laboratório especializado, encontram-se devidamente acondicionados em ")
                    textoInvolucroAut.Append("O restante dos materiais, anexado a este laudo, ficarão sob guarda da Autoridade Requisitante, acondicionados em ")
                End If
                If cmbInvolucro.Text.Equals("invólucro de segurança") Then
                    textoInvolucroIC01.Append("invólucro de segurança nº ").Append(txtInvolucroIC.Text).Append(" que segue anexado a este laudo.")
                Else
                    textoInvolucroIC01.Append(cmbInvolucro.Text).Append(" devidamente lacrado e rubricado que segue anexado a este laudo.")
                End If

                If cmbInvolucroAut.Text.Equals("invólucro de segurança") Then
                    textoInvolucroAut01.Append("invólucro de segurança nº ").Append(txtInvolucroAut.Text).Append(".")
                Else
                    textoInvolucroAut01.Append(cmbInvolucroAut.Text).Append(" devidamente lacrado e rubricado por este signatário.")
                End If

        texto.Append(textoInvolucroIC.ToString).Append(textoInvolucroIC01.ToString)
        texto.Append(Environment.NewLine)

        If fracionar Then
            texto.Append(textoInvolucroAut.ToString).Append(textoInvolucroAut01.ToString)
            texto.Append(Environment.NewLine)
        End If

        txtTexto.Text = texto.ToString
        Clipboard.SetDataObject(texto.ToString)

    End Sub

    Private Sub chamaGeraLaudo()

        Try

            For Each controle In pnlItens.Controls
                erro.SetError(controle, String.Empty)
            Next
            If validaCampos() Then
                geraLaudo()
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Function validaInvolucro() As Boolean

        Dim isOk As Boolean = False
        Try
            If cmbInvolucro.Text.Equals(String.Empty) Then
                erro.SetError(cmbInvolucro, "Selecione a forma de acondicionamento")
            Else
                erro.SetError(cmbInvolucro, String.Empty)
                If cmbInvolucro.Text.Equals("invólucro de segurança") Then
                    If txtInvolucroIC.Text.Equals(String.Empty) Then
                        erro.SetError(txtInvolucroIC, "Campo obrigatório")
                    Else
                        erro.SetError(txtInvolucroIC, String.Empty)
                        If fracionar Then
                            If cmbInvolucroAut.Text.Equals(String.Empty) Then
                                erro.SetError(cmbInvolucroAut, "Campo obrigatório")
                            Else
                                erro.SetError(cmbInvolucroAut, String.Empty)
                                If cmbInvolucroAut.Text.Equals("invólucro de segurança") Then
                                    If txtInvolucroAut.Text.Equals(String.Empty) Then
                                        erro.SetError(cmbInvolucroAut, "Campo obrigatório")
                                    Else
                                        erro.SetError(cmbInvolucroAut, String.Empty)
                                        isOk = True
                                    End If
                                End If
                            End If
                        End If
                        isOk = True
                    End If

                Else
                    isOk = True
                End If
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
        Return isOk
    End Function

    Private Sub exibeInvolucro()

        Try
            pnlInvolucro.Visible = True
            If fracionar Then
                pnlAutoridade.Visible = True
            Else
                pnlAutoridade.Visible = False
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub executaGeraLaudos()
        Try
            geraLaudo()
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Function validaCampos() As Boolean

        If _ucDrogas.getIndiceDroga <= 0 Then
            erro.SetError(_ucDrogas, "Campo obrigatório")
            _ucDrogas.Focus()
            Return False
        Else
            erro.SetError(_ucDrogas, "")
        End If

        If (cmbDescricao.Text.Length = 0) Then
            erro.SetError(cmbDescricao, "Preenchimento obrigatório")
            cmbDescricao.Focus()
            Return False
        Else
            erro.SetError(cmbDescricao, "")
        End If
        If (cmbCor.Text.Length = 0) Then
            erro.SetError(cmbCor, "Preenchimento obrigatório")
            cmbCor.Focus()
            Return False
        Else
            erro.SetError(cmbCor, "")
        End If
        If (txtQtdeUnidades.Text.Length = 0) Then
            erro.SetError(txtQtdeUnidades, "Preenchimento obrigatório")
            txtQtdeUnidades.Focus()
            Return False
        Else
            erro.SetError(txtQtdeUnidades, "")
        End If
        If (cmbAcondicionamento.Text.Length = 0) Then
            erro.SetError(cmbAcondicionamento, "Preenchimento obrigatório")
            cmbAcondicionamento.Focus()
            Return False
        Else
            erro.SetError(cmbAcondicionamento, "")
        End If

        If Not (_ucDrogas.getDrogas.Equals("ECSTASY") Or _ucDrogas.getDrogas.Equals("LOLÓ") _
                Or _ucDrogas.getDrogas.Equals("LANÇAPERFUME") Or _ucDrogas.getDrogas.Equals("LSD")) Then

            If (txtPesoTotal.Text.Length = 0) Then
                erro.SetError(txtPesoTotal, "Preenchimento obrigatório")
                txtPesoTotal.Focus()
                Return False
            Else
                erro.SetError(txtPesoTotal, "")
            End If

        End If

        Return True
    End Function

    Private Sub preencheDrogas(ByVal ind_descricao As Integer, ByVal ind_cor As Integer)
        cmbDescricao.SelectedIndex = ind_descricao
        cmbCor.SelectedIndex = ind_cor
        If ind_descricao = -1 And ind_cor = -1 Then
            erro.SetError(cmbCor, String.Empty)
            erro.SetError(cmbDescricao, String.Empty)
        End If
    End Sub

    Private Sub txtPesoIC_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtInvolucro_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub
    Private Sub txtInvolucroIC_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtPeso_KeyPress1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

   
    Private Sub limpaCampos()
        Try
            For Each controle In pnlItens.Controls
                If TypeOf (controle) Is GroupBox Then
                    For Each ctrl In CType(controle, GroupBox).Controls
                        If TypeOf (ctrl) Is TextBox Then
                            CType(ctrl, TextBox).Text = String.Empty
                            erro.SetError(ctrl, String.Empty)
                        End If
                    Next
                End If
            Next

            limpaCamposDrogas()
            cmbInvolucro.SelectedIndex = -1
            cmbInvolucroAut.SelectedIndex = -1
            txtInvolucroAut.Text = String.Empty
            txtInvolucroIC.Text = String.Empty
            cmbDescricao.SelectedIndex = -1
            cmbCor.SelectedIndex = -1
            cmbAcondicionamento.SelectedIndex = -1
            cmbDescricao.Text = String.Empty
            cmbCor.Text = String.Empty
            cmbAcondicionamento.Text = String.Empty
            '----------------------------------------------------------
            ' LIMPA MENSAGENS DE ERRO
            '----------------------------------------------------------
            erro.SetError(cmbDescricao, String.Empty)
            erro.SetError(cmbCor, String.Empty)
            erro.SetError(cmbAcondicionamento, String.Empty)
            erro.SetError(txtQtdeUnidades, String.Empty)
            erro.SetError(txtPesoTotal, String.Empty)
            '----------------------------------------------------------
            '
            '----------------------------------------------------------
            pnlInvolucro.Visible = False
            txtInvolucroAut.Visible = False
            lbAut.Visible = False
            txtInvolucroIC.Visible = False
            lbIc.Visible = False
            gridDrogas.Rows.Clear()
            pnlAutoridade.Visible = False
            fracionar = False
            n = 0
            tevePeso = False
            erroNivel = 0
            mensagem = String.Empty
            nomeDiretorio = Nothing
            txtTexto.Text = String.Empty

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub TextboxNumeric_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)

        Dim nonNumberEntered As Boolean

        nonNumberEntered = True

        If (e.KeyChar >= Convert.ToChar(48) AndAlso e.KeyChar <= Convert.ToChar(57)) OrElse e.KeyChar = Convert.ToChar(8) OrElse e.KeyChar = Convert.ToChar(44) Then

            nonNumberEntered = False

        End If

        If nonNumberEntered = True Then

            ' Stop the character from being entered into the control

            ' since it is non-numerical.

            e.Handled = True

        Else

            e.Handled = False

        End If

    End Sub

    Private Sub txtQtdeUnidades_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtQtdeUnidades.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtQtdeUnidades_MaskInputRejected(sender As Object, e As MaskInputRejectedEventArgs) Handles txtQtdeUnidades.MaskInputRejected

    End Sub

    Private Sub txtQtdeUnidades_TextChanged(sender As Object, e As EventArgs) Handles txtQtdeUnidades.TextChanged
        If txtQtdeUnidades.Text.Equals(String.Empty) Then
            erro.SetError(txtQtdeUnidades, "Informe a quantidade de invólucros")
        Else
            erro.SetError(txtQtdeUnidades, String.Empty)
        End If
    End Sub

    Private Sub txtPesoTotal_KeyPress(sender As Object, e As KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtPesoTotal_Leave(sender As Object, e As EventArgs)
        If txtPesoTotal.Text.Length = 0 Then
            erro.SetError(txtPesoTotal, "Preenchimento do campo é obrigatório")
            txtPesoTotal.Focus()
        Else
            erro.SetError(txtPesoTotal, "")
        End If
    End Sub

    Private Sub cmbDescricao_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbDescricao.SelectedIndexChanged
        If IsNothing(cmbDescricao.SelectedItem) Then
            erro.SetError(cmbDescricao, "Preenchimento obrigatório")
        Else
            erro.SetError(cmbDescricao, "")
        End If
    End Sub


    Private Sub cmbCor_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbCor.SelectedIndexChanged
        If IsNothing(cmbCor.SelectedItem) < 0 Then
            erro.SetError(cmbCor, " Preenchimento obrigatório")
        Else
            erro.SetError(cmbCor, "")
        End If
    End Sub

    Private Sub cmbAcondicionamento_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbAcondicionamento.SelectedIndexChanged
        If cmbAcondicionamento.SelectedIndex < 0 Then
            erro.SetError(cmbAcondicionamento, " Preenchimento obrigatório")
        Else
            erro.SetError(cmbAcondicionamento, "")
        End If
    End Sub
    Private Sub cmbAdicionar_Click(sender As Object, e As EventArgs) Handles btnAdicionar.Click

        Dim substancia As New StringBuilder
        Dim exame As New StringBuilder
        Dim acondicionamento As New StringBuilder

        If validaCampos() Then

            '------------------------------------------------------------------------------------
            ' ALTERAÇÕES REALIZADAS DE ACORDO COM MANIFESTO DA SPTC
            '------------------------------------------------------------------------------------
            substancia.Append("MATERIAL ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(": ")
            substancia.Append(generica.formataNumeroMaterial(txtQtdeUnidades.Text)).Append(" (").Append(generica.NumeroToExtenso(txtQtdeUnidades.Text)).Append(") ")
            If cmbCor.Text.Equals("incolor") Then
                substancia.Append(cmbAcondicionamento.Text).Append(" contendo ").Append(cmbDescricao.Text).Append(" ").Append(cmbCor.Text)
            Else
                substancia.Append(cmbAcondicionamento.Text).Append(" contendo ").Append(cmbDescricao.Text).Append(" de coloração ").Append(cmbCor.Text)
            End If


            If _ucDrogas.getDrogas.Equals("ECSTASY") Or _ucDrogas.getDrogas.Equals("LOLÓ") _
                Or _ucDrogas.getDrogas.Equals("LANÇAPERFUME") Or _ucDrogas.getDrogas.Equals("LSD") Then
                tevePeso = False
                substancia.Append(".")
            Else
                substancia.Append(" pesando, " & Chr(34) & "in totum" & Chr(34) & ", ").Append(txtPesoTotal.Text).Append(" g (").Append(generica.NumeroToExtenso(txtPesoTotal.Text))
                tevePeso = True
                If CInt(txtQtdeUnidades.Text) = 1 Then
                    substancia.Append(" grama).")
                Else
                    substancia.Append(" gramas).")
                End If
            End If

            exame.Append("Realizada a análise preliminar na substância descrita no ").Append("MATERIAL ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(_ucDrogas.getResultado)
            acondicionamento.Append("MATERIAL ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(": ")

            If rbSim.Checked Then
                If _ucDrogas.getDrogas.Equals("ECSTASY") Or _ucDrogas.getDrogas.Equals("LSD") Then
                    acondicionamento.Append("uma alíquota da amostra referente a ").Append(generica.formataNumeroMaterial(n)).Append(" (").Append(generica.NumeroToExtenso(n)).Append(")").Append(" unidades do material acima descrito, após a realização dos procedimentos de homogeneização, em conformidade com a UNODC (United Nations Office on Drugs and Crime, 2009), será enviada ao Instituto de Criminalística para a realização do exame definitivo.")
                Else
                    acondicionamento.Append("uma alíquota da amostra referente a ").Append(generica.formataNumeroMaterial(n)).Append(" (").Append(generica.NumeroToExtenso(n)).Append(")").Append(" unidades do material acima descrito, após a realização dos procedimentos de homogeneização, em conformidade com a UNODC (United Nations Office on Drugs and Crime, 2009), foi acondicionada em 01 (um) microtubo plástico devidamente identificado com a numeração ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(".")
                End If
            Else
                acondicionamento.Append("Todo material referente a este item será enviado ")
                If _ucDrogas.getDrogas.Equals("ECSTASY") Or _ucDrogas.getDrogas.Equals("LSD") Then
                    acondicionamento.Append("para a realização do exame definitivo de drogas.")
                Else
                    acondicionamento.Append("para a realização do exame definitivo de drogas.")
                End If
            End If

            gridDrogas.Rows.Add(substancia.ToString, exame.ToString, acondicionamento.ToString, _ucDrogas.getDrogas, txtPesoTotal.Text, rbSim.Checked, IIf(rbSim.Checked, "SIM", "NÃO"), generica.formataNumeroMaterial(gridDrogas.RowCount + 1), tevePeso)
            substancia.Clear()
            exame.Clear()
            acondicionamento.Clear()
            limpaCamposDrogas()
            limpaErros()
            pnlResultado.Focus()


        End If
    End Sub

    Private Sub limpaErros()
        erro.SetError(cmbDescricao, String.Empty)
        erro.SetError(cmbAcondicionamento, String.Empty)
        erro.SetError(cmbCor, String.Empty)
        erro.SetError(txtQtdeUnidades, String.Empty)
        erro.SetError(txtPesoTotal, String.Empty)
        erro.SetError(_ucDrogas, String.Empty)
    End Sub

    Private Sub rbNao_CheckedChanged(sender As Object, e As EventArgs) Handles rbNao.CheckedChanged

        If rbNao.Checked Then
            lblMensagem.Visible = False
            lblMensagem.Text = "Não há necessidade de realizar a amostragem do material"
            n = 0
        End If
    End Sub

    Private Sub rbSim_CheckedChanged(sender As Object, e As EventArgs) Handles rbSim.CheckedChanged
        If rbSim.Checked Then
            If CInt(txtQtdeUnidades.Text) = 1 Then
                MsgBox("Quantidade igual a uma unidade. O fracionamento só é possível para quantidades maiores do que 1.")
                rbNao.Checked = True
            Else
                lblMensagem.Visible = True
                If txtQtdeUnidades.Text.Length = 0 Then
                    erro.SetError(txtQtdeUnidades, "Favor informar a quantidade da substância")
                    txtQtdeUnidades.Focus()
                Else
                    n = Sqrt(txtQtdeUnidades.Text)
                    lblMensagem.Text = "Retirar : " & n & " amostras da substância"
                End If
            End If
        End If
    End Sub
    Private Sub txtInvolucroIC_Leave(sender As Object, e As EventArgs)
        If Not txtInvolucroIC.Text.Equals(String.Empty) Then
            erro.SetError(txtInvolucroIC, String.Empty)
        End If
    End Sub

    Private Sub txtInvolucroAut_Leave(sender As Object, e As EventArgs)
        If Not txtInvolucroAut.Text.Equals(String.Empty) Then
            erro.SetError(txtInvolucroAut, String.Empty)
        End If
    End Sub



    Private Sub limpaCamposDrogas()
        cmbDescricao.SelectedIndex = -1
        cmbCor.SelectedIndex = -1
        txtQtdeUnidades.Text = String.Empty
        cmbAcondicionamento.SelectedIndex = -1
        txtPesoTotal.Text = String.Empty
        _ucDrogas.cmbDroga.SelectedIndex = -1
        lblMensagem.Text = String.Empty
        rbNao.Checked = True
        txtInvolucroAut.Text = String.Empty
        txtInvolucroIC.Text = String.Empty
        cmbInvolucro.SelectedIndex = -1
        pnlResultado.Focus()

    End Sub
    Private Sub cmbInvolucroAut_SelectedIndexChanged(sender As Object, e As EventArgs)
        If cmbInvolucroAut.Text.Equals("invólucro de segurança") Then
            txtInvolucroAut.Visible = True
            lbAut.Visible = True
        Else
            txtInvolucroAut.Visible = False
            lbAut.Visible = False
        End If
    End Sub

    Private Sub cmbInvolucro_SelectedIndexChanged(sender As Object, e As EventArgs)
        If cmbInvolucro.Text.Equals("invólucro de segurança") Then

            txtInvolucroIC.Visible = True
            lbIc.Visible = True
            pnlAutoridade.Visible = False

            If fracionar Then
                pnlAutoridade.Visible = True
            Else
                pnlAutoridade.Visible = False
            End If

        Else

            txtInvolucroIC.Visible = False
            lbIc.Visible = False
        End If
    End Sub
    Private Sub habilitaPainelInferior(ByVal habilita As Boolean)

        '  pnlItens.Enabled = habilita
        pnlInvolucro.Visible = Not habilita


    End Sub


    Private Sub cmdOk_Click(sender As Object, e As EventArgs)
        pnlInvolucro.Visible = False
        If validaInvolucro() Then
            If gridDrogas.Rows.Count = 0 Then
                MsgBox("Adicione pelo menos uma substância na lista")
            Else
                geraLaudo()
            End If
        Else
            pnlInvolucro.Visible = True
        End If
    End Sub

    Private Sub Button1_Click_2(sender As Object, e As EventArgs)
        pnlInvolucro.Visible = False
        habilitaPainelInferior(True)
    End Sub

    Private Sub btnLimpa_Click(sender As Object, e As EventArgs) Handles btnLimpa.Click
        limpaCampos()
        limpaCamposDrogas()
    End Sub

    Private Sub btnGerar_Click(sender As Object, e As EventArgs) Handles btnGerar.Click

        For Each controle In pnlItens.Controls
            erro.SetError(controle, String.Empty)
        Next
        Try
            If gridDrogas.Rows.Count = 0 Then
                MsgBox("Adicione pelo menos uma substância na lista")

            Else
                '------------------------------------------------------
                ' BUSCA NO GRID SE HOUVE FRACIONAMENTO DA SUBSTÂNCIA
                '------------------------------------------------------
                For Each linha As DataGridViewRow In gridDrogas.Rows
                    If CType(linha.Cells("FRACIONOU").Value, Boolean) = True Then
                        fracionar = True
                        Exit For
                    End If
                Next
                '------------------------------------------------------
                ' BUSCA NO GRID SE HOUVE ALGUM SUBSTÂNCIA COM PESAGEM
                '-----------------------------------------------------
                For Each linha As DataGridViewRow In gridDrogas.Rows
                    If CType(linha.Cells("TEVE_PESO").Value, Boolean) = True Then
                        tevePeso = True
                        Exit For
                    End If
                Next
                habilitaPainelInferior(False)
                exibeInvolucro()
            End If

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        pnlInvolucro.Visible = False
        habilitaPainelInferior(True)
    End Sub

    Private Sub cmbInvolucro_SelectedIndexChanged_1(sender As Object, e As EventArgs) Handles cmbInvolucro.SelectedIndexChanged
        If cmbInvolucro.Text.Equals("invólucro de segurança") Then

            txtInvolucroIC.Visible = True
            lbIc.Visible = True
            pnlAutoridade.Visible = False

            If fracionar Then
                pnlAutoridade.Visible = True
            Else
                pnlAutoridade.Visible = False
            End If

        Else

            txtInvolucroIC.Visible = False
            lbIc.Visible = False
        End If
    End Sub

    Private Sub cmbInvolucroAut_SelectedIndexChanged_1(sender As Object, e As EventArgs) Handles cmbInvolucroAut.SelectedIndexChanged
        If cmbInvolucroAut.Text.Equals("invólucro de segurança") Then
            txtInvolucroAut.Visible = True
            lbAut.Visible = True
        Else
            txtInvolucroAut.Visible = False
            lbAut.Visible = False
        End If
    End Sub

    Private Sub txtPesoTotal_KeyPress1(sender As Object, e As KeyPressEventArgs) Handles txtPesoTotal.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub


    Private Sub cmdOk_Click_1(sender As Object, e As EventArgs) Handles cmdOk.Click
        pnlInvolucro.Visible = False
        If validaInvolucro() Then

            If gridDrogas.Rows.Count = 0 Then
                MsgBox("Adicione pelo menos uma substância na lista")
            Else
                geraLaudo()
            End If
        Else
            pnlInvolucro.Visible = True
        End If
        ' MsgBox("Texto gerado com sucesso e copiado para a área de memória. Acesse o PCNet e clique em CTRL + V (colar)")
    End Sub
End Class